!pip install ipyvizzu
!pip install ipyvizzu-story
Requirement already satisfied: ipyvizzu in c:\users\vp\anaconda3\lib\site-packages (0.12.1) Requirement already satisfied: pandas in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (1.4.2) Requirement already satisfied: IPython in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (8.2.0) Requirement already satisfied: jsonschema in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (4.4.0) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (3.0.20) Requirement already satisfied: pygments>=2.4.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (2.11.2) Requirement already satisfied: decorator in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (5.1.1) Requirement already satisfied: pickleshare in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.7.5) Requirement already satisfied: stack-data in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.2.0) Requirement already satisfied: colorama in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.4.4) Requirement already satisfied: matplotlib-inline in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.1.2) Requirement already satisfied: backcall in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.2.0) Requirement already satisfied: jedi>=0.16 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.18.1) Requirement already satisfied: traitlets>=5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (5.1.1) Requirement already satisfied: setuptools>=18.5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (61.2.0) Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\vp\anaconda3\lib\site-packages (from jedi>=0.16->IPython->ipyvizzu) (0.8.3) Requirement already satisfied: wcwidth in c:\users\vp\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython->ipyvizzu) (0.2.5) Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu) (0.18.0) Requirement already satisfied: attrs>=17.4.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu) (21.4.0) Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (2.8.2) Requirement already satisfied: numpy>=1.18.5 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (1.21.5) Requirement already satisfied: pytz>=2020.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (2021.3) Requirement already satisfied: six>=1.5 in c:\users\vp\anaconda3\lib\site-packages (from python-dateutil>=2.8.1->pandas->ipyvizzu) (1.16.0) Requirement already satisfied: pure-eval in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (0.2.2) Requirement already satisfied: asttokens in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (2.0.5) Requirement already satisfied: executing in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (0.8.3) Requirement already satisfied: ipyvizzu-story in c:\users\vp\anaconda3\lib\site-packages (0.4.1) Requirement already satisfied: ipyvizzu in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu-story) (0.12.1) Requirement already satisfied: jsonschema in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (4.4.0) Requirement already satisfied: pandas in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (1.4.2) Requirement already satisfied: IPython in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (8.2.0) Requirement already satisfied: pygments>=2.4.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (2.11.2) Requirement already satisfied: colorama in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.4.4) Requirement already satisfied: pickleshare in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.7.5) Requirement already satisfied: stack-data in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.2.0) Requirement already satisfied: jedi>=0.16 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.18.1) Requirement already satisfied: traitlets>=5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (5.1.1) Requirement already satisfied: setuptools>=18.5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (61.2.0) Requirement already satisfied: matplotlib-inline in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.1.2) Requirement already satisfied: decorator in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (5.1.1) Requirement already satisfied: backcall in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.2.0) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (3.0.20) Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\vp\anaconda3\lib\site-packages (from jedi>=0.16->IPython->ipyvizzu->ipyvizzu-story) (0.8.3) Requirement already satisfied: wcwidth in c:\users\vp\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython->ipyvizzu->ipyvizzu-story) (0.2.5) Requirement already satisfied: attrs>=17.4.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu->ipyvizzu-story) (21.4.0) Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu->ipyvizzu-story) (0.18.0) Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (2.8.2) Requirement already satisfied: numpy>=1.18.5 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (1.21.5) Requirement already satisfied: pytz>=2020.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (2021.3) Requirement already satisfied: six>=1.5 in c:\users\vp\anaconda3\lib\site-packages (from python-dateutil>=2.8.1->pandas->ipyvizzu->ipyvizzu-story) (1.16.0) Requirement already satisfied: executing in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (0.8.3) Requirement already satisfied: pure-eval in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (0.2.2) Requirement already satisfied: asttokens in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (2.0.5)
import pandas as pd
from ipyvizzu import Data, Config, Style
from ipyvizzustory import Story, Slide, Step
data = Data()
df = pd.read_csv("https://raw.githubusercontent.com/vizzuhq/vizzu-workshops/main/2022-11-11-PyData-NYC/data/trump_2020_05.csv")
data.add_data_frame(df)
style = Style(
{
"tooltip":{"fontSize":"22px"},
"title": {"paddingTop":"1.2em","fontSize":"2.5em"},
"legend": {"label":{"fontSize":"1.8em"},"width":"16em" },
"logo":{"width":"6em"},
"plot": {
# "paddingLeft": "2.5em",
"marker": {"label": {"fontSize": "1.5em"}},
"yAxis": {
"label": {
"fontSize": "1.5em",
},
"title": {"color": "#ffffff00"},
"interlacing": {"color": "#ffffff00"}
},
"xAxis": {
"label": {
"fontSize": "1.6em",
"paddingTop": "1em",
},
"title": {"fontSize": "1.4em", "paddingTop": "2.5em"}
},
}
}
)
story = Story(data=data, style=style)
story.set_feature("tooltip", True)
story.set_size("100%", "400px")
slide0 = Slide(Step(Config({})))
story.add_slide(slide0)
slide1 = Slide(
Step(
Data.filter("record.Firsttweet === 'Igen' && record.Dummy === 'Nem'"),
Config(
{
"channels": {
"y": {
"set": ["tweets"],
},
"x": {"set": ["Period", "year", "month"]},
"color": "Period",
},
"title": "Trump started tweeting in May '09",
}
),
)
)
story.add_slide(slide1)
slide2 = Slide(
Step(
Data.filter(
"record.Period === 'New to Twitter' && record.Dummy === 'Nem'"),
Config(
{
"title": "In the first two years he wasn't very active",
}
),
)
)
story.add_slide(slide2)
slide3 = Slide(
Step(
Data.filter(
"(record.Period === 'New to Twitter' || record.Period === 'Businessman') && record.Dummy === 'Nem'"),
Config(
{
"title": "Then he got hooked on",
}
),
)
)
story.add_slide(slide3)
slide4 = Slide(
Step(
Data.filter(
"(record.Period === 'New to Twitter' || record.Period === 'Businessman' || record.Period === 'Nominee') && record.Dummy === 'Nem'"),
Config(
{
"title": "Interesting trend after becoming a presidential nominee",
}
),
)
)
story.add_slide(slide4)
slide5 = Slide(
Step(
Data.filter("record.Dummy === 'Nem'"),
Config(
{
"title": "And after he became President",
}
),
)
)
story.add_slide(slide5)
slide6 = Slide(
Step(
Config(
{
"geometry": "area",
"align": "center"
}
),
)
)
story.add_slide(slide6)
slide7 = Slide(
Step(
Config(
{
"title": "All of Trump's tweets until May 2020",
}
),
)
)
story.add_slide(slide7)
slide8 = Slide(
Step(
Config(
{
"y": "retweetcount",
"title": "And the number of times these were retweeted",
}
),
)
)
story.add_slide(slide8)
slide9 = Slide()
slide9.add_step(Step(
Config(
{
"y": "tweets",
"title": "Let's focus on the number of tweets for now",
}
),
)),
slide9.add_step(Step(
Config(
{
"x": {"set": ["year", "month"]},
"color": None,
}
)
))
story.add_slide(slide9)
slide10 = Slide(
Step(
Config(
{
"y": ["tweets", "Type"],
"color": "Type",
"title": "Original tweets, retweets & replies sent",
}
),
Style({
"plot": {
"marker": {
"colorPalette": "#A0CDEBFF #60C0E6FF #1DA1F3FF "
}}},
)
)
)
story.add_slide(slide10)
slide11 = Slide(
Step(
Config(
{
"split": True,
"align": "none"
}
),
Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}}}})
)
)
story.add_slide(slide11)
slide12 = Slide(
Step(
Config(
{
"split": False,
"align": "stretch",
"title": "Original tweets, retweets & replies sent (%)",
}
),
Style({"plot": {"yAxis": {"label": {"color": "#999999ff"}}}})
)
)
story.add_slide(slide12)
slide13 = Slide()
slide13.add_step(Step(
Config(
{
"align": "center",
"title": "",
}
),
))
slide13.add_step(Step(
Config(
{
"y": "tweets",
"color": None,
"legend": "lightness"
}
),
Style({
"plot": {
"marker": {
"colorPalette": "null"
}}},
)
)
)
story.add_slide(slide13)
slide14 = Slide(
Step(
Config(
{
"y": ["tweets", "Tool"],
"color": "Tool",
"title": "Tools Trump Used to Tweet",
"legend": "color"
}
),
Style({
"plot": {
"marker": {
"colorPalette": "#597696FF #ED2828FF #26EC87FF #29B9BFFF "
}}},
)
)
)
story.add_slide(slide14)
slide15 = Slide(
Step(
Config(
{
"split": True,
"align": "none"
}
),
Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}}}})
)
)
story.add_slide(slide15)
slide16 = Slide()
slide16.add_step(Step(
Config(
{
"geometry": "rectangle",
}
),
)),
slide16.add_step(Step(
Config(
{
"x": ["tweets", "year", "month"],
"y": "Tool",
"geometry": "rectangle",
"split": False,
"align": "none",
}
),
Style({"plot": {"xAxis": {"title": {"color": "#ffffff00"}},
"yAxis": {"label": {"color": "#999999ff"}}}},
)
)),
slide16.add_step(Step(
Config(
{
"x": "tweets",
"label": "tweets",
}
),
))
story.add_slide(slide16)
slide17 = Slide()
slide17.add_step(Step(
Config(
{
"x": ["tweets", "AMPM", "hour12"],
"label": None,
}
),
)),
slide17.add_step(Step(
Config(
{
"y": ["tweets", "Tool"],
"x": ["AMPM", "hour12"],
"align": "max",
}
),
)),
slide17.add_step(Step(
Config(
{
"geometry": "area",
}
),
)),
slide17.add_step(Step(
Config(
{
"coordSystem": "polar",
"rotate": 180,
"title":"Time of Day When Trump Tweeted"
}
),
Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}},
"xAxis":{"label":{"fontSize":"2em","paddingBottom":"2.5em","paddingTop":"2.5em","paddingLeft":"2.5em","paddingRight":"2.5em"}}
}})
)),
story.add_slide(slide17)
slide18 = Slide(
Step(
Config(
{
"y": ["Businessman", "Tool"],
"title": "Times Trump Tweeted When Being a Businessman",
}
),
)
)
story.add_slide(slide18)
slide19 = Slide(
Step(
Config(
{
"y": ["President", "Tool"],
"title": "Times Trump Tweeted When Being President",
}
),
)
)
story.add_slide(slide19)
story.play()